package main

import (
	"fmt"
	"log"
	"mcp-server/internal/qdrant"
)

func main() {
	fmt.Println("=== Qdrant向量操作测试 ===")

	// 初始化服务
	service, err := qdrant.InitializeQdrant("config.yaml", "", ".")
	if err != nil {
		log.Fatalf("初始化失败: %v", err)
	}
	defer service.Close()

	client := service.GetClient()

	// 测试向量插入
	fmt.Println("1. 测试向量插入...")
	vectors := []qdrant.Vector{
		{
			ID:     "doc1",
			Vector: []float32{0.1, 0.2, 0.3, 0.4},
			Payload: map[string]interface{}{
				"title":   "测试文档1",
				"content": "这是一个测试文档的内容",
			},
		},
		{
			ID:     "doc2",
			Vector: []float32{0.2, 0.3, 0.4, 0.5},
			Payload: map[string]interface{}{
				"title":   "测试文档2",
				"content": "这是另一个测试文档",
			},
		},
	}

	if err := client.InsertVectors(vectors); err != nil {
		log.Printf("插入向量失败: %v", err)
	} else {
		fmt.Println("✓ 向量插入成功")
	}

	// 测试向量搜索
	fmt.Println("2. 测试向量搜索...")
	query := qdrant.Vector{
		Vector: []float32{0.15, 0.25, 0.35, 0.45},
	}

	results, err := client.SearchVectors(query, 5)
	if err != nil {
		log.Printf("搜索向量失败: %v", err)
	} else {
		fmt.Printf("✓ 搜索返回 %d 个结果:\n", len(results))
		for i, result := range results {
			fmt.Printf("  %d. ID: %s, Score: %.4f, Title: %v\n",
				i+1, result.ID, result.Score, result.Payload["title"])
		}
	}

	// 测试集合信息
	fmt.Println("3. 测试集合信息...")
	info, err := client.GetCollectionInfo("documents")
	if err != nil {
		log.Printf("获取集合信息失败: %v", err)
	} else {
		fmt.Printf("✓ 集合信息: 名称=%s, 向量数量=%d, 状态=%s\n",
			info.Name, info.VectorCount, info.Status)
	}

	// 测试向量删除
	fmt.Println("4. 测试向量删除...")
	if err := client.DeleteVectors([]string{"doc1"}); err != nil {
		log.Printf("删除向量失败: %v", err)
	} else {
		fmt.Println("✓ 向量删除成功")
	}

	// 再次检查集合信息
	fmt.Println("5. 删除后的集合信息...")
	info, err = client.GetCollectionInfo("documents")
	if err != nil {
		log.Printf("获取集合信息失败: %v", err)
	} else {
		fmt.Printf("✓ 删除后集合信息: 向量数量=%d\n", info.VectorCount)
	}

	fmt.Println("=== 测试完成 ===")
}
